<template>
    <div class="main">
        <el-scrollbar class="el-scrollbar">
            <el-menu :default-active="String(deafult_active_data)" background-color="#1f2d3d" text-color="#ffffff" active-text-color="#ffd04b"
                :collapse="this.$store.state.homex.openJudge">

                <el-menu-item index="x" class="spanx" :style="widthx" @click="go_hello()">
                    <i class="el-icon-house"></i>
                    <span>首页</span>
                </el-menu-item>



                <LeftHomeCode  v-for="(item, index) in MenuData" :tochild="item"  :key="item.menuRouter + index">
                
                </LeftHomeCode>
                




            </el-menu>

        </el-scrollbar>
    </div>
</template>
  
<script>
import RoleMenuApi from '@/api/menuRequest'
import LeftHomeCode from '@/views/homeComponet/leftHomeCode.vue';

export default {
    // 组件名称
    name: 'leftHome',
    // 组件参数 接收来自父组件的数据
    props: {},
    // 局部注册的组件
    components: { LeftHomeCode },
    // 组件状态值
    data() {
        return {
            MenuData: [],
            widthx: 'width:14.8vw'
        }
    },
    // 计算属性
    computed: {
        //计算展开行
        deafult_active_data() {
            return this.$store.getters['homex/GETDEFAULTACTIVE'];
        }
    },
    // 侦听器
    watch: {
        "$store.state.homex.openJudge": {
            handler: function (newVal, oldVal) {
                // console.log(newVal, oldVal);
                if (newVal == true) {
                    this.widthx = 'width:5vw'
                } else {
                    this.widthx = 'width:14.8vw'
                }
            }
        }
    },
    // 组件方法
    methods: {
        //获取路由
        getRouterX() {
            let UserID = JSON.parse(sessionStorage.getItem("roleId"));
            RoleMenuApi.selectRoleAuthority(UserID).then(res => {
                this.MenuData = res.data;
            })
        },
        //去首页
        go_hello() {
            this.$store.commit("homex/CHANFEDEFAULTACTIVE", 'x');
            this.$router.replace({
                path: `/hello`,
            });
        }
    },
    // 以下是生命周期钩子   注：没用到的钩子请自行删除
    /**
    * 在实例初始化之后，组件属性计算之前，如data属性等
    */
    beforeCreate() {
    },
    /**
    * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
    */
    created() {
        this.getRouterX();
    },
    /**
    * 在挂载开始之前被调用：相关的 render 函数首次被调用。
    */
    beforeMount() {
    },
    /**
    * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
    * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
    */
    mounted() {
    },
    /**
    * 数据更新时调用，发生在虚拟 DOM 重新渲染和打补丁之前。
    * 你可以在这个钩子中进一步地更改状态，这不会触发附加的重渲染过程。
    */
    beforeUpdate() {
    },
    /**
    * 由于数据更改导致的虚拟 DOM 重新渲染和打补丁，在这之后会调用该钩子。
    * 当这个钩子被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。
    */
    updated() {
    },
    /**
    * keep-alive 组件激活时调用。 仅针对keep-alive 组件有效
    */
    activated() {
    },
    /**
    * keep-alive 组件停用时调用。 仅针对keep-alive 组件有效
    */
    deactivated() {
    },
    /**
    * 实例销毁之前调用。在这一步，实例仍然完全可用。
    */
    beforeDestroy() {
    },
    /**
    * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
    * 所有的事件监听器会被移除，所有的子实例也会被销毁。
    */
    destroyed() {
    }
}
</script> 
  
  
<style scoped>
.main {
    position: relative;
    width: 100%;
    height: 92vh;
}

.el-scrollbar {
    height: 92vh;
    display: flex;
    flex-wrap: wrap;
    overflow-x: hidden;
}

::v-deep .is-horizontal {
    display: none;
}

::v-deep .el-scrollbar__wrap {
    overflow-x: hidden;
}

.spanx {
    position: relative;
    width: 14.8vw;
    overflow: hidden;
}

.spanxTwo {
    position: relative;
    width: 5vw;
    overflow: hidden;
}
</style>